//package com.nami.logic.service.impl;
//
//import com.nami.logic.cache.request.ConverBrief;
//import com.nami.logic.service.ConverSyncHandler;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.context.ApplicationListener;
//import org.springframework.context.event.ContextClosedEvent;
//
//import javax.annotation.PostConstruct;
//import java.util.concurrent.Executors;
//import java.util.concurrent.ScheduledExecutorService;
//import java.util.concurrent.TimeUnit;
//
//@Slf4j
//public abstract class AbstractConverSyncHandler2 implements ConverSyncHandler, ApplicationListener<ContextClosedEvent> {
//
//    private static ScheduledExecutorService executorService;
//
//    @PostConstruct
//    /**
//     * 启动定时任务，每10秒刷新一次会话数据到数据库。
//     */
//    private void startSyncTask() {
//        executorService = Executors.newScheduledThreadPool(20);
//    }
//
//    /**
//     * 塞入线程池，延迟执行
//     * 是否需要拆分，比如按是否在线用户？
//     * 按照单聊，群聊 优先级 ？。单聊 小群vip群？ 小群普通群？ 3000vip群？ 3000普通群 10w vip群 10w普通群？
//     *
//     * @param conver
//     */
//    @Override
//    public void handler(ConverBrief conver) {
//        executorService.schedule(() -> {
//            try {
//                doHandler(conver);
//            } catch (Exception var3) {
//                var3.printStackTrace();
//                log.error("[conver-sync] error:", var3);
//            }
//        }, 5, TimeUnit.SECONDS);
//    }
//
//    /**
//     * do handler
//     *
//     * @param conver
//     */
//    abstract void doHandler(ConverBrief conver);
//
//    /**
//     * 应用程序关闭时停止线程池。
//     */
//    @Override
//    public void onApplicationEvent(ContextClosedEvent event) {
//        shutdownScheduler();
//    }
//
//    /**
//     * 停止定时任务并等待线程池终止。
//     */
//    private void shutdownScheduler() {
//        executorService.shutdown();
//        try {
//            if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
//                executorService.shutdownNow();
//            }
//        } catch (InterruptedException e) {
//            executorService.shutdownNow();
//        }
//        log.info("[conver-sync] scheduler shutdown.");
//    }
//}
